Microprocessors are general-purpose processors that provide high instruction throughputs in order to execute software running thereon, and can have a wide range of processing requirements depending on the particular software applications involved. Many different types of processors are known, of which microprocessors are but one example. For example, Digital Signal Processors (DSPs) are widely used, in particular for specific applications, such as mobile processing applications. DSPs are typically configured to optimize the performance of the applications concerned and to achieve this they employ more specialized execution units and instruction sets. Particularly in applications such as mobile telecommunications, but not exclusively, it is desirable to provide ever-increasing DSP performance while keeping power consumption as low as possible.
As computer systems become more complex, it is becoming more difficult for human beings to easily understand and grasp all the intricacies involved in any given computer system. During execution, a computer system may move units of memory, such as pages or cache lines, between units of hardware. As more complex caching systems are designed and as caching systems begin to have more and more levels, it is becoming more and more difficult for human beings to understand whether a given caching system is operating efficiently for the software executing on the computer system.
Software currently exists to aid a human being in visualizing certain aspects of a computer's memory, such as the performance impact of caching. These conventional software programs, however, display memory using a line-by-line display on a display device. Another example of conventional visualization software displays memory accesses by address on one axis of a graph and time on the other axis. This method also fails to present data in a way that effectively aids human understanding of the relationships between the data.
The term “locality of memory” refers to the location of data (e.g., variables) within memory in time and space. Accessing a variable closely in time is called “temporal locality.” Accessing variables stored physically close together is called “spatial locality.” Physical locations in a memory that are close together have a high spatial locality. For example, a 49th memory unit and a 50th memory unit (such as bits, bytes, words, pages, etc.) that are physically close to each other in a computer memory have a high spatial locality. As another example, if a variable is read twice in quick succession, the variable has a high temporal locality. On modem computer systems, temporal and spatial locality impact performance. Instruction fetches for a program module that contains several tens or hundreds of bytes of instruction code that is executed in a looping manner exhibits both temporal and spatial locality.